#-*- codeing = utf-8 -*-
#@Time : 2020/10/18 13:51
#@Author : 阳某
#@File : axis参数怎么理解.py
#@Software : PyCharm
import numpy as np
import pandas as pd

'''
Pandas的axis参数怎么理解？
axis=0或者"index"：
如果是单行操作，就指的是某一行
如果是聚合操作，指的是跨行cross rows
axis=1或者"columns"：
如果是单列操作，就指的是某一列
如果是聚合操作，指的是跨列cross columns
按哪个axis，就是这个axis要动起来(类似被for遍历)，其它的axis保持不动
'''

df = pd.DataFrame(
    np.arange(12).reshape(3,4),
    columns=['A', 'B', 'C', 'D']
)
print(df)
# 1、单列drop，就是删除某一列
# 代表的就是删除某列
print(df.drop('A',axis=1))
# 2、单行drop，就是删除某一行
print(df)
print(df.drop(1,axis=0))
# 3、按axis=0/index执行mean聚合操作
# 反直觉：输出的不是每行的结果，而是每列的结果
print(df)
# axis=0 or axis=index
print(df.mean(axis = 0))    # 指定了按哪个axis，就是这个axis要动起来(类似被for遍历)，其它的axis保持不动
# 4、按axis=1/columns执行mean聚合操作
# 反直觉：输出的不是每行的结果，而是每列的结果
print(df)
# axis=1 or axis=columns
print(df.mean(axis=1))  #指定了按哪个axis，就是这个axis要动起来(类似被for遍历)，其它的axis保持不动

# 5、再次举例，加深理解
def get_sum_value(x):
    return x["A"] + x["B"] + x["C"] + x["D"]

df["sum_value"] = df.apply(get_sum_value, axis=1)
print(df)   #指定了按哪个axis，就是这个axis要动起来(类似被for遍历)，其它的axis保持不动
